<?php
/**
 *  * 系统-受国家计算机软件著作权保护 - !
 * =========================================================
 * Copy right 2018-2025 成都海之心科技有限公司, 保留所有权利。
 * ----------------------------------------------
 * 官方网址: http://www.ohyu.cn
 * 这不是一个自由软件！在未得到官方有效许可的前提下禁止对程序代码进行修改和使用。
 * 任何企业和个人不允许对程序代码以任何形式任何目的再发布。
 * =========================================================
 * User: ohyueo
 * Date: 2022/5/10
 * Time: 11:41
 */

namespace app\common;
use think\facade\Db;

class Map
{
    //根据ip查询城市
    public function getmapip($ip){
        $key=config('-mapsite.map_appkey');
        $url="https://apis.map.qq.com/ws/location/v1/ip?ip=".$ip."&key=$key";
        $result = file_get_contents($url);
        $jsondecode = json_decode($result,true); //对JSON格式的字符串进行编码
        return $jsondecode;
    }
    //批量测算距离
    public function mapdistance($from,$to){
        $key=config('-mapsite.map_appkey');
        $url='https://apis.map.qq.com/ws/distance/v1/matrix?mode=driving&from='.$from.'&to='.$to.'&key='.$key;
        $result = file_get_contents($url);
        $jsondecode = json_decode($result,true); //对JSON格式的字符串进行编码
        return $jsondecode;
    }
    //经纬度查询城市
    public function getcity($location){
        $key=config('-mapsite.map_appkey');
        $url='https://apis.map.qq.com/ws/geocoder/v1/?location='.$location.'&key='.$key;
        $result = file_get_contents($url);
        $jsondecode = json_decode($result,true); //对JSON格式的字符串进行编码
        return $jsondecode;
    }
    //根据地址查询经纬度
    public function getlocation($address){
        $key=config('-mapsite.map_appkey');
        $url='https://apis.map.qq.com/ws/geocoder/v1/?address='.$address.'&key='.$key;
        $result = file_get_contents($url);
        $jsondecode = json_decode($result,true); //对JSON格式的字符串进行编码
        return $jsondecode;
    }
    //读取城市信息
    public function getcitylist(){
        $key=config('-mapsite.map_appkey');
        // 请求接口URL
        $url = 'https://apis.map.qq.com/ws/district/v1/list?key='.$key.'&output=json';
        // 发送GET请求并获取接口返回结果
        $response = file_get_contents($url);
        // 解析JSON格式的返回结果
        $result = json_decode($response, true);
        if ($result['status'] == 0) {
            // 返回结果中的数据部分
            $data = $result['result'][0]; // 省级行政区
            $data2 = $result['result'][1]; // 市级行政区
            $data3 = $result['result'][2]; // 区县级行政区
        
            // 遍历省级行政区
            foreach ($data as $province){
                $arrs=['type'=>1,'val'=>$province['fullname'],'citycode'=>$province['id']];
                $pid = Db::name('vehicles_addcity')->insertGetId($arrs);
        
                // 遍历该省对应的市级行政区
                $cidx=$province['cidx'];
                $str=$cidx[0];
                $end=$cidx[1];
                //如果是直辖市和省直辖 则存入一条市的数据 并且pid等于该市的id
                if($province['fullname']=='北京市'||$province['fullname']=='天津市'||$province['fullname']=='上海市'||$province['fullname']=='重庆市'||$province['fullname']=='香港特别行政区'||$province['fullname']=='澳门特别行政区'||$province['fullname']=='台湾省'){
                    $arrs=['type'=>2,'pid'=>$pid,'val'=>$province['fullname'],'citycode'=>$province['id']];
                    $cityId = Db::name('vehicles_addcity')->insertGetId($arrs);
                    // 遍历该市对应的区县级行政区
                    if (isset($province['cidx'])) {
                        $cidx2 = $province['cidx'];
                        $str2 = $cidx2[0];
                        $end2 = $cidx2[1];
                        for ($j = $str2; $j < $end2; $j++) {
                            $arrs=['type'=>3,'pid'=>$cityId,'val'=>$data2[$j]['fullname'],'citycode'=>$data2[$j]['id']];
                            Db::name('vehicles_addcity')->insert($arrs);
                        }
                    } else {
                        echo "错误信息";exit;
                    }
                }else{
                    //否则存入市的数据 并且pid等于该省的id
                    for($i=$str;$i<$end;$i++){
                        $arrs=['type'=>2,'pid'=>$pid,'val'=>$data2[$i]['fullname'],'citycode'=>$data2[$i]['id']];
                        $cityId = Db::name('vehicles_addcity')->insertGetId($arrs);
                        // 遍历该市对应的区县级行政区
                        if (isset($data2[$i]['cidx'])) {
                            $cidx2 = $data2[$i]['cidx'];
                            $str2 = $cidx2[0];
                            $end2 = $cidx2[1];
                            for ($j = $str2; $j < $end2; $j++) {
                                $arrs=['type'=>3,'pid'=>$cityId,'val'=>$data3[$j]['fullname'],'citycode'=>$data3[$j]['id']];
                                Db::name('vehicles_addcity')->insert($arrs);
                            }
                        } else {
                            // 如果这个市没有区为直辖市则省和市都是该市的名称，区是区的名称
                            $arrs=['type'=>3,'pid'=>$cityId,'val'=>$data2[$i]['fullname'],'citycode'=>$data2[$i]['id']];
                            Db::name('vehicles_addcity')->insert($arrs);
                        }
                    }
                }
                // for($i=$str;$i<$end;$i++){
                //     $arrs=['type'=>2,'pid'=>$pid,'val'=>$data2[$i]['fullname'],'citycode'=>$data2[$i]['id']];
                //     $cityId = Db::name('vehicles_addcity')->insertGetId($arrs);
                //     // 遍历该市对应的区县级行政区
                //     if (isset($data2[$i]['cidx'])) {
                //         $cidx2 = $data2[$i]['cidx'];
                //         $str2 = $cidx2[0];
                //         $end2 = $cidx2[1];
                //         for ($j = $str2; $j < $end2; $j++) {
                //             $arrs=['type'=>3,'pid'=>$cityId,'val'=>$data3[$j]['fullname'],'citycode'=>$data3[$j]['id']];
                //             Db::name('vehicles_addcity')->insert($arrs);
                //         }
                //     } else {
                //         // 如果这个市没有区为直辖市则省和市都是该市的名称，区是区的名称
                //         $arrs=['type'=>3,'pid'=>$cityId,'val'=>$data2[$i]['fullname'],'citycode'=>$data2[$i]['id']];
                //         Db::name('vehicles_addcity')->insert($arrs);
                //     }
                // }
            }
        } else {
            echo '请求接口失败';
        }
    }
}